// 使用一个指定的 this 值和一个或多个参数来调用一个函数。

// 实现要点：

// this 可能传入 null；
// 传入不固定个数的参数；
// 函数可能有返回值；
Function.prototype.myCall = function (context) {
  // context = context || window // context是否存在 不存在就是window
  // context.fn = this // 将该方法添加到传进来的this上
  // let args = [...arguments].slice(1) // 接收传递过来的参数
  // let result = null // 初始化返回值
  // result = context.fn(...args)
  // delete context.fn
  // return result
  context = context || window
  context.fn = this
  let args = [...arguments]
  args.shift()
  let res = context.fn(...args)
  delete context.fn
  return res
}
function a (a) {
  console.log(this.name);
  console.log(this.age);
  console.log(a);
}
let obj = {
  name: '方现伟',
  age: 20
}
a.myCall(obj, 2)